|
|
|
|
|
|
|
Object-oriented analysis |
|
Use-case modeling |
|
Class modeling |
|
Dynamic modeling |
|
Testing during the object-oriented analysis
phase |
|
CASE tools for the object-oriented analysis
phase |
|
Air Gourmet case study: Object-oriented analysis |
|
Challenges of the object-oriented analysis phase |
|
|
|
|
|
Object-oriented paradigm |
|
Reaction to perceived shortcomings in structured
paradigm |
|
Problem of larger products |
|
Data and action treated as equal partners |
|
|
|
|
|
Object consists of |
|
Data (attributes, state variables, instance
variables, fields, data members), and |
|
Actions (methods, member functions) |
|
Objects are independent units |
|
Conceptual independence |
|
Physical independence |
|
|
|
|
|
Semi-formal specification technique |
|
Multiplicity of different methods |
|
Booch |
|
OMT |
|
Objectory |
|
Shlaer-Mellor |
|
Coad-Yourdon |
|
All essentially equivalent |
|
Nowadays, we represent OOA using UML (unified
modeling language) |
|
|
|
|
|
1. Use-case modeling |
|
Determine how the various results are computed
by the product (without regard to sequencing) |
|
Largely action oriented |
|
2. Class modeling (“object modeling”) |
|
Determine the classes and their attributes |
|
Purely data-oriented |
|
3. Dynamic modeling |
|
Determine the actions performed by or to each
class |
|
Purely action-oriented |
|
|
|
Iterative process |
|
|
|
|
|
|
1.
Use-Case Modeling |
|
Use case: Generic description of overall
functionality |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Scenario: Instance of a use case |
|
Get comprehensive insight into behavior of
product |
|
|
|
|
|
|
|
|
|
Extract classes and their attributes |
|
Represent them using an entity-relationship
diagram |
|
Deduce the classes from use cases and their
scenarios |
|
Often there are many scenarios |
|
Possible danger: too many candidate classes |
|
|
|
|
|
|
|
Noun extraction |
|
Always works |
|
CRC classes |
|
Need to have domain expertise |
|
|
|
|
|
|
Stage 1. Concise Problem Definition |
|
Define product in single sentence |
|
Buttons in elevators and on the floors control
the motion of n elevators in a building with m floors. |
|
|
|
|
|
|
Stage 2.
Informal Strategy |
|
Incorporate constraints, express result in a
single paragraph |
|
Buttons in elevators and on the floors control
movement of n elevators in a building with m floors. Buttons illuminate when pressed to
request the elevator to stop at a specific floor; illumination is canceled
when the request has been satisfied.
When an elevator has no requests, it remains at its current floor
with its doors closed. |
|
|
|
|
|
Stage 3.
Formalize the Strategy |
|
Identify nouns in informal strategy. Use nouns as candidate classes |
|
Nouns |
|
button, elevator, floor, movement, building,
illumination, illumination, door |
|
floor, building, door are outside problem
boundary — exclude |
|
movement, illumination, illumination are
abstract nouns — exclude (may become attributes) |
|
Candidate classes: Elevator and Button |
|
Subclasses: Elevator Button and Floor Button |
|
|
|
|
|
Problem |
|
Buttons do not communicate directly with
elevators |
|
We need an additional class: Elevator Controller |
|
|
|
|
|
All relationships are now 1-to-n |
|
Makes design and implementation easier |
|
|
|
|
|
Used since 1989 for OOA |
|
For each class, fill in card showing |
|
Name of class |
|
Functionality (responsibility) |
|
List of classes it invokes (collaboration) |
|
Now automated (CASE tool component) |
|
Strength |
|
When acted out by team members, powerful tool
for highlighting missing or incorrect items |
|
Weakness |
|
Domain expertise is needed |
|
|
|
|
Produce UML state diagram |
|
State, event, predicate distributed over state
diagram |
|
UML “guards” are in brackets |
|
|
|
|
|
CRC cards are an excellent testing technique |
|
|
|
|
|
|
|
Consider responsibility |
|
1. Turn on elevator button |
|
Totally unacceptable for object-oriented
paradigm |
|
Responsibility-driven design ignored |
|
Information hiding ignored |
|
Responsibility |
|
1. Turn on elevator button |
|
should be |
|
1. Send message to Elevator Button to
turn itself on |
|
|
|
|
|
|
|
A class has been overlooked |
|
Elevator doors have a state that changes during
execution (class characteristic) |
|
Add class Elevator Doors |
|
Safety considerations |
|
Reconsider class model |
|
Then reconsider dynamic model, use-case model |
|
|
|
|
|
|
|
|
|
|
|
All three models are now fine |
|
We should rather say: |
|
All three models are fine for now |
|
We may need to return to the object-oriented
analysis phase during the object-oriented design phase |
|
|
|
|
|
Perhaps the method is not yet mature? |
|
Waterfall model (explicit feedback loops) |
|
Rapid prototyping model (aim: to reduce
iteration) |
|
Incremental model, and |
|
Spiral model |
|
Latter two explicitly reflect iterative approach |
|
Iteration is an intrinsic property of all
software production |
|
Especially for medium- and large-scale products |
|
Expect iteration in the object-oriented paradigm |
|
|
|
|
|
|
Diagrams play a major role |
|
Diagrams often change |
|
Need a diagramming tool |
|
Many tools go further |
|
All modern tools support UML |
|
Example |
|
Rose |
|
|
|
|
Use-case model for making a reservation |
|
|
|
|
|
|
Use-case for returning and scanning a postcard |
|
|
|
|
|
|
|
|
Stage 1. Concise Problem Definition |
|
Define product in single sentence |
|
A computerized system is needed to provide
information regarding the efficacy of a special meals program. |
|
|
|
|
|
|
Stage 2.
Informal Strategy |
|
Incorporate constraints, express result in a
single paragraph |
|
Reports are to be generated to document the
efficacy of the special meals program.
The reports concern meals loaded on flights, flights boarded by
passengers, names and addresses of passengers, meal quality, and low-sodium
meals. |
|
|
|
|
|
Stage 3.
Formalize the Strategy |
|
Identify nouns in informal strategy. Use nouns as candidate classes |
|
Nouns |
|
report, efficacy, program, percentage, meal,
flight, boarding, passenger, name, address, quality |
|
efficacy, program, percentage, boarding, quality
are abstract nouns — exclude (may
become attributes) |
|
name, address are attributes of passenger |
|
Question: Should meal and flight be classes? |
|
It is easier to add classes than to remove them |
|
Candidate classes: Report and Passenger |
|
|
|
|
|
Problems with this class diagram |
|
Data for reports are needed on a per-flight
basis |
|
Each report has to access multiple flights |
|
Each flight has multiple passengers |
|
Six reports (not four) are needed |
|
|
|
|
|
Cause of our problems |
|
Flight should have been a candidate class |
|
BUT, we all have 20–20 hindsight |
|
|
|
|
|
|
Do not class the boundary into object-oriented
design |
|
Do not allocate methods to classes yet |
|
|
|